package com.enjoyor.soa.traffic.rest.efoms.dubbo.impl;

import com.alibaba.dubbo.config.annotation.Reference;
import com.enjoyor.soa.traffic.api.service.dubbo.efoms.IDubboDeviceDetailInfoService;
import com.enjoyor.soa.traffic.rest.efoms.dubbo.IDeviceDetailInfoConsumeService;
import com.enjoyor.soa.traffic.util.enums.EnumAppCode;
import com.enjoyor.soa.traffic.util.helper.ResultHelper;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

import org.springframework.stereotype.Component;

@Component
public class DeviceDetailInfoConsumeService implements IDeviceDetailInfoConsumeService {

    @Reference(version = "1.0.0", timeout = 10000)
    private IDubboDeviceDetailInfoService dubboDeviceDetailService;
    
    /**
     * 根据编号查询设备详细信息
     * @param devTypeCode 设备类型编号
     * @param devId 设备编号
     * @return ResultPojo
     */
    @Override
    public ResultPojo selectDeviceDetailInfoById(String devTypeCode, String devId) {
    	ResultPojo resultPojo = new ResultPojo();
        try {
			resultPojo = dubboDeviceDetailService.selectDeviceDetailInfoById(devTypeCode, devId);
        }catch (Exception e ){
            e.printStackTrace();
            return ResultHelper.getResult(e,EnumAppCode.OPERATOR_FAILURE);
        }
        return resultPojo;
    }
    
    /**
     * 查询设备详细列表信息
     * @param devTypeCode 设备类型编号
     * @param devId 设备编号
     * @param devName 设备名称
     * @param key 关键字（设备编号或设备名称）
     * @param devAreaCode 管辖区域编号
     * @param devDeptId 管理部门编号
     * @param ledType 诱导类型编号
     * @return ResultPojo
     */
    @Override
	public ResultPojo selectDeviceDetailInfoList(String devTypeCode, String devId, String devName,
			String key, String devAreaCode, String devDeptId, String ledType,String deviceStatus) {
    	ResultPojo resultPojo = new ResultPojo();
        try {
			resultPojo = dubboDeviceDetailService.selectDeviceDetailInfoList(devTypeCode, devId, devName, 
					key, devAreaCode, devDeptId, ledType, deviceStatus);
		}catch (Exception e ){
            e.printStackTrace();
            return ResultHelper.getResult(e,EnumAppCode.OPERATOR_FAILURE);
        }
        return resultPojo;
    }
	/**
     * 查询设备详细分页信息
     * @param devTypeCode 设备类型编号
     * @param devId 设备编号
     * @param devName 设备名称
     * @param key 关键字（设备编号或设备名称）
     * @param devAreaCode 管辖区域编号
     * @param devDeptId 管理部门编号
     * @param ledType 诱导类型编号
     * @return ResultPojo
     */
    @Override
	@SuppressWarnings("rawtypes")
	public ResultPojo selectDeviceDetailInfoPage(String devTypeCode, String devId, String devName,
			String key, String devAreaCode, String devDeptId, String ledType,String deviceStatus, Page page) {
    	ResultPojo resultPojo = new ResultPojo();
        try {
			resultPojo = dubboDeviceDetailService.selectDeviceDetailInfoPage(devTypeCode, devId, devName, 
					key, devAreaCode, devDeptId, ledType,deviceStatus, page);
		}catch (Exception e ){
            e.printStackTrace();
            return ResultHelper.getResult(e,EnumAppCode.OPERATOR_FAILURE);
        }
        return resultPojo;
    }

	/**
     * 查询视频详细分页信息（包含视频组是否选中）
     * @param videoGroupId 视频组编号
     * @param isSelect 是否选中
     * @param devId 设备编号
     * @param devName 设备名称
     * @param key 关键字（设备编号或设备名称）
     * @param devAreaCode 管辖区域编号
     * @param devDeptId 管理部门编号
     * @return ResultPojo
     */
	@Override
    @SuppressWarnings("rawtypes")
	public ResultPojo selectVideoByPage(String videoGroupId, String isSelect, String devId, String devName,
			String key, String devAreaCode, String devDeptId,String deviceStatus, Page page) {
    	ResultPojo resultPojo = new ResultPojo();
        try {
			resultPojo = dubboDeviceDetailService.selectVideoByPage(videoGroupId, isSelect, devId, devName, 
					key, devAreaCode, devDeptId,deviceStatus, page);
		}catch (Exception e ){
            e.printStackTrace();
            return ResultHelper.getResult(e,EnumAppCode.OPERATOR_FAILURE);
        }
        return resultPojo;
    }
	
	/**
     * 设备分页查询信息（资产管理）
     * @param devTypeCode 设备类型编号
     * @param DevId 设备编号
     * @param devName 设备名称
     * @param key 关键字（设备编号或设备名称）
     * @param devStatusCode 设备状态编号
     * @param devAreaCode 管辖区域编号
     * @param devDeptId 管理部门编号
     * @param devFactory 生成厂家
     * @param oppmDept 维修单位
     * @param repStatusCode 报修状态编号
     * @param buildBeginDate 建设开始日期
     * @param buildEndDate 建设结束日期
     * @param shelfBeginDate 质保到期开始日期
     * @param shelfEndDate 质保到期结束日期
     * @param oppmBeginDate 下次维护开始日期
     * @param oppmEndDate 下次维护结束日期
     * @return ResultPojo
     */
	@Override
	@SuppressWarnings("rawtypes")
    public ResultPojo selectAssetDevicePage(String devTypeCode, String DevId, String devName, String key,
			String devStatusCode, String devAreaCode, String devDeptId, String devFactory, String oppmDept,
			String repStatusCode, String buildBeginDate, String buildEndDate, String shelfBeginDate,
			String shelfEndDate, String oppmBeginDate, String oppmEndDate,String deviceStatus, Page page){
    	ResultPojo resultPojo = new ResultPojo();
        try {
			resultPojo = dubboDeviceDetailService.selectAssetDevicePage(devTypeCode, DevId, devName, key, devStatusCode,
					devAreaCode, devDeptId, devFactory, oppmDept, repStatusCode, buildBeginDate, buildEndDate,
					shelfBeginDate, shelfEndDate, oppmBeginDate, oppmEndDate,deviceStatus, page);
		}catch (Exception e ){
            e.printStackTrace();
            return ResultHelper.getResult(e,EnumAppCode.OPERATOR_FAILURE);
        }
        return resultPojo;
    }
}
